import tkinter as tk
from PIL import Image, ImageDraw, ImageFont,ImageTk

# 字体库
win = {"宋体":"C:/Windows/Fonts/simsun.ttc",
       "黑体":"C:/Windows/Fonts/simhei.ttf",
       "隶书":"C:/Windows/Fonts/SIMLI.TTF"}

# 生成图像
#        "华文彩云":"C:/Windows/Fonts/STCAIYUN.TTF",
def go():
    global win
    # 返回字体、大小与文字分隔后的列表
    size = int(size_var.get())
    font = font_var.get()
    cn = cn_text.get().split()
    # 遍历文字列表
    for k in cn:
        # 创建图像，RGB模式，尺寸300*300，白色背景
        img = Image.new('RGB', (size, size), color="#FFF")
        # 创建图像对象
        draw = ImageDraw.Draw(img)
        # 设置字体和文字的大小
        font_path = win[font]  # 请确保字体文件路径正确
        font_str = ImageFont.truetype(font_path, size)
        # 在图像上绘制文字坐标
        draw.text((0,0), k, font=font_str, fill='#000')
        photo = ImageTk.PhotoImage(img)
        # 绘制画布
        label = tk.Label(imgs_frame, image=photo)
        # 防止图像被垃圾回收，否则图片不显示
        label.image = photo  
        label.pack(side=tk.LEFT)


# 窗口与界面
root = tk.Tk()
root.title("汉字生图")
# 大小
size_var = tk.StringVar()
size_var.set("16")
# 字体
font_var = tk.StringVar()
font_var.set("黑体")
# 文字区
cn_text = tk.Entry(root)
cn_text.insert(0,'人 口 手 金 木 水 火 土 阴 阳')
cn_text.pack()
# 按钮区
frame = tk.Frame(root)
frame.pack()
tk.Label(frame, text="像素大小:").pack(side=tk.LEFT)
tk.Entry(frame, textvariable=size_var, width=5).pack(side=tk.LEFT)
tk.Label(frame, text="字体:").pack(side=tk.LEFT)
tk.OptionMenu(frame, font_var, "宋体", "黑体", "隶书").pack(side=tk.LEFT)
tk.Button(frame, text="开始", command=go).pack(side=tk.LEFT)

# 图片显示区
imgs_frame = tk.Frame(root)
imgs_frame.pack()

root.mainloop()